import 'package:get/get_utils/src/platform/platform.dart';
import 'package:permission_handler/permission_handler.dart';
import 'Tools.dart';

class PermissionUtil {
  // 检查权限，支持相机、相册等权限
  static Future<bool> checkPermission(Permission permission) async {
    PermissionStatus status = await permission.status;
    print('检测权限$status');
    if (status.isGranted) {
      // 权限通过
      return true;
    } else if (status.isDenied) {
      // 权限被拒绝
      await requestPermission(permission);
      return false;
    } else if (status.isPermanentlyDenied) {
      // 权限永久拒绝，需要打开设置界面
      Tools.showToast('需要先打开app权限设置!');
      openAppSettings();
      return false;
    } else {
      // 其他状态
      Tools.showToast('需要先打开app权限设置!');
      openAppSettings();
      return false;
    }
  }

  // 请求权限
  static Future<void> requestPermission(Permission permission) async {
    // 发起权限申请
    PermissionStatus status = await permission.request();
    print('权限状态$status');
    if (status.isPermanentlyDenied) {
      openAppSettings();
    }
  }

  // 打开应用设置界面
  static Future<void> openAppSettings() async {
    await openAppSettings();
  }

  // 专门处理相册权限（Android & iOS）
  static Future<bool> checkGalleryPermission() async {
    if (await Permission.photos.isGranted) {
      // 相册权限已经授予
      return true;
    } else if (await Permission.photos.isDenied) {
      // 相册权限被拒绝
      await requestPermission(Permission.photos);
      return false;
    } else if (await Permission.photos.isPermanentlyDenied) {
      // 永久拒绝权限，需要进入设置界面
      Tools.showToast('需要先打开app权限设置!');
      openAppSettings();
      return false;
    } else {
      // 未知状态，进入设置界面
      Tools.showToast('需要先打开app权限设置!');
      openAppSettings();
      return false;
    }
  }

  // 专门处理存储权限（Android）
  static Future<bool> checkStoragePermission() async {
    // Android 版本判断
    if (GetPlatform.isAndroid) {
      if (await Permission.storage.isGranted) {
        return true;
      } else if (await Permission.storage.isDenied) {
        await requestPermission(Permission.storage);
        return false;
      } else if (await Permission.storage.isPermanentlyDenied) {
        // 永久拒绝权限，打开设置界面
        Tools.showToast('需要先打开app权限设置!');
        openAppSettings();
        return false;
      } else {
        // 未知状态，进入设置界面
        Tools.showToast('需要先打开app权限设置!');
        openAppSettings();
        return false;
      }
    }
    return true; // iOS 上不需要处理存储权限
  }
}
